#ifndef FLOW_H
#define FLOW_H

#include <netinet/ip.h>     /* Network   Layer */
#include <netinet/tcp.h>    /* Transport Layer */

#include <string>

class Flow
{
    u_int32_t saddr;  /* Source Address */
    u_int16_t source; /* Source Port    */

    u_int32_t daddr;  /* Destination Address */
    u_int16_t dest;   /* Destination Port    */

    long bytes;

public:
    bool _syn_ack;
    bool _ack;

public:
    Flow(u_int32_t saddr  = 0,
         u_int16_t source = 0,
         u_int32_t daddr  = 0,
         u_int16_t dest   = 0);

    bool operator == (const Flow);

//    u_int32_t getSourceAddress();
    u_int16_t getSourcePort();

//    u_int32_t getDestinationAddress();
    u_int16_t getDestinationPort();

    std::string getSourceAddress();
    std::string getDestinationAddress();

    long getBytes();
    void increaseBytes(long bytes);

    std::string toStdString();


};

#endif // FLOW_H
